;:sys36864 ;.opt oo *= $8000 tmp =181 chk =4 ramnr =5 tab =12 pos =384 a =2 try =247 old =248 puff =$cf00 mgl =249 .word reset,$fe5e .byte "CBM80" reset ldx #-1 sei txs cld stx $d016 jsr $fda3 lda #0 tay sta 50000 clrzp sta 2,y sta 512,y sta 768,y iny bne clrzp lda #4 sta 648 lda #8 sta $282 lda #128 sta $284 jsr $fd15 jsr 65409 lda #0 sta 53280 sta 53281 cli jsr $e453 jsr $e3bf ldx #$fb txs jsr tit jsr primm .byte "Kernal-ROM\x18" ldy #0 sty chk sty tmp lda #224 sta tmp+1 ldx #32 c1 lda (tmp),y clc adc chk sta chk iny bne c1 inc tmp+1 dex bne c1 lda 65408 beq zer cmp #3 bne sonst lda #10 .byt $2c zer lda #11 cmp chk jsr pass jmp verout sonst jsr fail jsr primm .byte " ???\x9d\x03" verout jsr primm .byte "\x1d\x1dversion #\x03" ldx 65408 lda #0 jsr $bdcd jsr primm .byte "\x1aBasic-ROM\x18" ldy #0 sty chk sty tmp lda #160 sta tmp+1 ldx #32 c2 lda (tmp),y clc adc chk sta chk iny bne c2 inc tmp+1 dex bne c2 lda #86 cmp chk jsr pass jsr primm .byte "\x1aFont-ROM\x18" sei lda #51 sta 1 ldy #0 sty chk sty tmp lda #208 sta tmp+1 ldx #16 c3 lda (tmp),y clc adc chk sta chk iny bne c3 inc tmp+1 dex bne c3 lda #55 sta 1 cli lda #248 cmp chk jsr pass ldx #chips-mram copyst lda mram,x sta pos,x dex bpl copyst jsr $aad7 ldx #0 ramloop stx ramnr jsr primm .byte "\x1aRAM U\x03" lda chips,x tax lda #0 jsr $bdcd lda #tab sta 211 sei ldy #2 ldx ramnr ra1 lda 0,y sta chk lda #-1 sta 0,y lda 0,y and grbit,x beq r0 lda #0 sta 0,y lda 0,y and grbit,x bne r0 lda chk sta 0,y iny bne ra1 beq bisherok r0 lda #0 sta tmp+1 sty tmp ldy #0 lda chk sta (tmp),y ramfaul lda tmp pha lda tmp+1 pha lda #1 jsr pass jsr primm .byte " addr = $\x03" pla jsr hexout pla jsr hexout jmp ramcont bisherok lda #48 sei jsr pos cli bcs ramfaul lda #0 jsr pass ramcont ldx ramnr inx cpx #8 bcs ramfert jmp ramloop ramfert =* jsr primm .byte "\x1a\x1aColor-RAM\x18" ldy #0 cr1 =* lda $d800,y sta chk lda #10 sta $d800,y lda $d800,y and #15 cmp #10 bne qcfaul lda #5 sta $d800,y lda $d800,y and #15 cmp #5 bne qcfaul lda chk sta $d800,y lda $d900,y sta chk lda #10 sta $d900,y lda $d900,y and #15 cmp #10 qcfaul bne cfaul lda #5 sta $d900,y lda $d900,y and #15 cmp #5 bne cfaul lda chk sta $d900,y lda $da00,y sta chk lda #10 sta $da00,y lda $da00,y and #15 cmp #10 bne cfaul lda #5 sta $da00,y lda $da00,y and #15 cmp #5 bne cfaul lda chk sta $da00,y lda $db00,y sta chk lda #10 sta $db00,y lda $db00,y and #15 cmp #10 bne cfaul lda #5 sta $db00,y lda $db00,y and #15 cmp #5 bne cfaul lda chk sta $db00,y iny beq cok jmp cr1 cok lda #0 cfaul jsr pass jsr primm .byte "\x1a\x1aALU\x18" lda #123 clc adc #45 sbc #89 ora #16 and #$bc eor #$78 lsr sec ror eor #$99 bne alu0 sec rol sbc #36 asl adc #78 sed clc adc #$50 cld eor #$57 alu0 jsr pass jsr primm .byte "\x1aJMP ($xxff)\x18" lda #169 sta $cf10 sta $cf11 lda #96 sta $cf12 sta $ce10 lda #$10 sta $ceff ldx #$cf stx $cf00 dex stx $ce00 jsr test6510 cmp #169 jsr pass jsr primm .byte "\x1aStack\x18" tsx stx chk fillstack lda reset,x pha dex bne fillstack holstack inx pla cmp reset,x bne stack0 cpx chk bcc holstack lda #0 .byt 44 stack0 lda #1 ldx chk txs tax jsr pass jsr cont jsr tit jsr primm .byte "SID env\x18" lda #10 sta try nexttry jsr clrsid lda #15 sta 54296 lda #$fa sta 54292 lda #0 sta tmp lda #17 sta 54290 wartan dec tmp beq ih o1 jsr pause lda 54300 beq wartan ldx #0 stx tmp jsr count1 lda #16 sta 54290 sta tmp+1 wartaus dex bne o2 dec tmp bne o2 dec tmp+1 beq ih o2 lda 54300 bne wartaus jsr count0 lda a+1 bne ih lda a cmp #83 beq passt ih dec try bne nexttry lda #255 passt jsr pass jsr primm .byte "\x1aSID osc\x18" lda #20 sta mgl moegl sei lda #220 ldy #65 jsr getsid bne du1 fa1 lda puff,x beq fa2 cmp #-1 bne du1 fa2 inx bne fa1 txa du1 sta chk lda #1 ldy #33 jsr getsid bne du2 lda puff fb cmp puff,x bne du2a clc adc #1 inx bne fb txa beq du2 du2a lda #-1 du2 ora chk sta chk lda #1 ldy #17 jsr getsid bne du3 inx fc1 lda puff-1,x sec sbc puff,x cmp #3 bcc fc2 cmp #-2 bcc du3 fc2 inx bne fc1 txa du3 ora chk beq rausda dec mgl bne moegl lda #-1 rausda cli jsr pass jsr clrsid jsr primm .byte "\x1aSID Data\x18" ldx #24 leertest lda 54272,x bne paul dex bpl leertest tax paul jsr pass jsr primm .byte "\x1a\x1aA/D conv.\x18" jsr testad jsr pass lda #47 sta 0 jsr primm .byte "\x1aCass.Port\x18" sei lda #7 sta 1 jsr pause lda 1 and #16 cmp #16 bne capa lda #39 sta 1 jsr pause lda 1 and #16 capa jsr pass lda #55 sta 1 cli jmp swap disk jsr primm .byte "\x1aSerial Port\x18" lda #51 sta $dd02 lda #255 sta $dd00 jsr pause lda $dd00 and #192 bne passse lda #3 sta $dd00 jsr pause lda $dd00 and #192 cmp #192 passse jsr pass lda #63 sta 56578 rts swap jsr primm .byte "\x1aCTRL ports\x18" lda #0 sta $dc02 lda #31 sta $dc03 lda #%10101 sta $dc01 lda $dc00 and #31 cmp #%10101 bne jpa lda #%01010 sta $dc01 lda $dc00 and #31 cmp #%01010 bne jpa lda #0 sta $dc03 lda #31 sta $dc02 lda #%10101 sta $dc00 lda $dc01 and #31 cmp #%10101 bne jpa lda #%01010 sta $dc00 lda $dc01 and #31 cmp #%01010 jpa jsr pass lda #0 sta 56323 lda #-1 sta 56322 jsr disk jsr primm .byte "\x1aUserport\x18" lda #%00111011 sta $dd02 lda #%10111110 sta $dd03 lda #128 sta $dd01 lda $dd00 and #4 cmp #4 bne qup lda #0 sta $dd01 lda $dd00 and #4 bne qup lda $dd01 and #1 bne qup lda #32 sta $dd01 lda $dd01 and #1 cmp #1 qup bne qqup lda #127 sta $dd0d jsr clrshift lda #0 sta $dd0e sta $dd0c ldx #%11001010 ldy #8 stx tmp bita1 lda #0 asl tmp bcc bita2 lda #16 bita2 ora #8 sta $dd01 lda #0 sta $dd01 dey bne bita1 cpx $dd0c qqup bne up lda #0 sta $dc0e sta $dc0c ldx #%10010011 ldy #8 stx tmp bitb1 lda #0 asl tmp bcc bitb2 lda #4 bitb2 ora #2 sta $dd01 lda #0 sta $dd01 dey bne bitb1 cpx $dc0c bne up lda #11 sta 56576 lda $dd01 and #64 bne up lda #3 sta 56576 lda $dd01 and #64 cmp #64 bne up sei ldx #127 stx $dd0d jsr nmi3 lda #0 sta chk jsr pause lda chk bne up lda $dd01 jsr pause lda chk cmp #-1 bne up lda #0 sta chk jsr pause lda chk bne up sta $dd01 jsr pause lda chk cmp #-1 up jsr pass jsr nmi0 cut jsr primm .byte "\x1a\x1at/Raster\x18" ldx #0 sei lda #20 sta try wartr1 lda 53265 bmi wartr1 wartr3 lda 53266 cmp #101 bne wartr3 wartr2 inx cmp 53266 beq wartr2 cpx #7 beq rasok cpx #6 bcc ras0 cpx #9 bcs ras0 ldx #0 dec try bne wartr1 ras0 lda #-1 rasok cli jsr pass jsr primm .byte "\x1aSprites\x18" lda #151 sta 56576 lda #255 ldx #63 ve1 sta 704,x dex bpl ve1 lda #7 sta 53269 lda #100 ldx #200 sta 53248 stx 53249 lda #120 ldx #205 sta 53250 stx 53251 lda #150 ldx #210 sta 53252 stx 53253 lda #1 sta 53288 sta 53289 lda #11 sta 2040 sta 2041 sta 2042 ldx #7 ve2 stx 53277 lda 53278 txa pha jsr pause2 pla tax lda 53278 cmp ziel,x bne ve3 dex bpl ve2 lda 53279 jsr pause2 lda 53279 bne ve3 lda #43 sta 1881 lda 53279 jsr pause2 lda 53279 cmp #4 ve3 jsr pass lda #0 sta 53269 lda #32 sta 1881 jsr primm .byte "\x1aRaster-IRQ\x18" lda #20 sta try rs2 sei lda #100 sta $d012 lda #27 sta 53265 lda #$81 sta $d01a ldx #0 stx chk ldy #0 lda #rirq sta 788 sty 789 cli wartras inx bne rs3 iny beq rs4 rs3 lda chk beq wartras sei lda #0 sta $d01a jsr count0 lda chk cmp #100 beq rs1 dec try bne rs2 rs4 lda #-1 rs1 jsr pass jsr $fda3 jsr nmi jsr primm .byte "\x1aTimer-IRQ\x18" lda #3 sta try iq2 ldx #0 jsr count1 txa tay iq1 inx bne iq1 iny bne iq1 clc adc #1 cmp #11 bcc iq1 jsr count0 lda a+1 bne iq3 lda a cmp #234 beq iq4 iq3 dec try bne iq2 lda #-1 iq4 jsr pass jsr primm .byte "\x1aTimer CIA1\x18" lda #-1 sta $dc04 sta $dc06 lda #200 sta $dc05 sta $dc07 lda #%10011000 sta $dc0e and #$ef sta $dc0e lda #%00011000 sta $dc0f and #$ef sta $dc0f lda $dc04 cmp #-1 bne oh1 cmp $dc06 bne oh1 lda $dc05 cmp #200 bne oh1 cmp $dc07 bne oh1 sei lda #9 sta $dc0e sta $dc0f warttm1 lda $dc05 bne warttm1 cmp $dc07 oh1 jsr pass jsr $ff84 jsr primm .byte "\x1aTimer CIA2\x18" lda #-1 sta $dd04 sta $dd06 lda #200 sta $dd05 sta $dd07 lda #%10011000 sta $dd0e and #$ef sta $dd0e lda #%00011000 sta $dd0f and #$ef sta $dd0f lda $dd04 cmp #-1 bne oh2 cmp $dd06 bne oh2 lda $dd05 cmp #200 bne oh2 cmp $dd07 bne oh2 sei lda #9 sta $dd0e sta $dd0f warttm2 lda $dd05 bne warttm2 cmp $dd07 oh2 jsr pass jsr primm .byte "\x1aTOD CIA1\x18" lda #3 sta try wt02 lda #<9850 sta $dd04 lda #>9850 sta $dd05 lda #-1 sta $dd06 sta $dd07 lda #16 sta $dd0e sta $dd0f lda #%01001001 sta $dd0f lda #0 sta $dc0b sta $dc0a sta $dc09 sta tmp sta tmp+1 sei ldy #0 ldx #%10000001 stx $dd0e sta $dc08 lda #129 sta $dc0e ldx #0 wt01 dex bne wtx1 dec tmp bne wtx1 dec tmp+1 beq wty1 wtx1 lda $dc09 cmp #5 bne wt01 sty $dd0f sty $dd0e lda $dd06 cmp #12 beq wt05 cmp #13 bne wt03 wt05 lda $dd07 cmp #254 beq wt04 wt03 dec try bne wt02 wty1 lda #-1 wt04 jsr pass jsr primm .byte "\x1aTOD CIA2\x18" lda #3 sta try wt12 lda #<9850 sta $dd04 lda #>9850 sta $dd05 lda #-1 sta $dd06 sta $dd07 lda #16 sta $dd0e sta $dd0f lda #%01001001 sta $dd0f lda #0 sta $dd0b sta $dd0a sta $dd09 sta tmp sta tmp+1 sei ldy #0 ldx #%10000001 stx $dd0e sta $dd08 ldx #0 wt11 dex bne wtx2 dec tmp bne wtx2 dec tmp+1 beq wty2 wtx2 lda $dd09 cmp #5 bne wt11 sty $dd0f sty $dd0e lda $dd06 cmp #12 beq wt15 cmp #13 bne wt13 wt15 lda $dd07 cmp #254 beq wt14 wt13 dec try bne wt12 wty2 lda #-1 wt14 jsr pass jmp maz nmi jsr primm .byte "\x1a\x1aTimer-NMI\x18" lda #3 sta try w15 lda #-1 sta $dd04 sta $dd05 lda #144 sta $dd0e ldx #127 stx $dd0d ldx #129 jsr nmi1 sei lda #137 sta $dd0e ldx #0 stx chk ldy #0 w11 inx bne w12 iny beq w13 w12 lda chk beq w11 cpy #21 beq w16 w13 dec try bne w15 lda #-1 w16 jsr pass jsr nmi0 cli jsr primm .byte "\x1aTOD-NMI\x18" lda #3 sta try w25 lda #128 sta $dd0f sta $dd0e lda #0 sta $dd0b sta $dd0a ldx #2 stx $dd09 sta $dd08 sta $dd0f ldx #$84 jsr nmi1 lda #0 sta $dd0b sta $dd0a sta $dd09 sta $dd08 tax stx chk tay lda #3 sta mgl w21 inx bne w22 iny bne w22 dec mgl beq w23 w22 lda chk beq w21 ldy mgl cpy #1 w24 beq w26 w23 dec try bne w25 lda #-1 w26 jsr pass jmp nmi0 maz =* jsr cont jmp reset cont jsr primm .byte "\x1a\x1aSpace to continue\x03" lda #0 sta 198 wait2 jsr 65508 cmp #32 bne wait2 rts tit jsr primm .byte "\x1a\x93\x08\x05\x0eDoc'64 2.2 by N. Heusler nh-071090-arr\x1a\x03" rts primm pla sta tmp pla sta tmp+1 p1 inc tmp bne p2 inc tmp+1 p2 ldy #0 lda (tmp),y beq p3 cmp #"\x03" beq p3 cmp #"\x1a" bne p4 lda #13 p4 cmp #"\x18" beq p5 jsr $ffd2 bcc p1 p5 lda #tab sta 211 p3 lda tmp+1 pha lda tmp pha rts pass bne fail jsr primm .byte "\x1epassed\x05\x03" rts fail jsr primm .byte "\x1cFAILED\x05\x03" rts hexout pha lsr lsr lsr lsr jsr hex1 pla hex1 and #15 tax lda hex,x jmp 65490 test6510 jmp ($ceff) mram sta 1 lda #2 sta tmp+1 ldy #0 sty tmp r1 lda (tmp),y pha lda #-1 sta (tmp),y lda (tmp),y and grbit-mram+pos,x beq r2 lda #0 sta (tmp),y lda (tmp),y and grbit-mram+pos,x bne r2 pla sta (tmp),y inc tmp bne r1 inc tmp+1 bne r1 lda #55 sta 1 clc rts r2 pla sta (tmp),y lda #55 sta 1 sec rts grbit .byt 1,2,4,8,16,32,64,128 chips .byt 21,9,22,10,23,11,24,12 hex .byte "0123456789abcdef" ziel .byt 3,3,7,7,3,3,7,7 countirq inc a bne a1 inc a+1 a1 jmp $ea7e count1 sei lda #0 sta a sta a+1 lda #countirq setirq sta 788 sty 789 cli rts count0 sei lda #$31 ldy #$ea bne setirq nmi1 lda #nmi9 nmis sta 792 sty 793 stx $dd0d rts nmi0 lda #71 ldy #254 ldx #127 bne nmis nmi9 pha txa pha tya pha lda $dd0d and #%101 beq nmi7 nmi8 lda #-1 sta chk nmi7 jmp $febc nmi3 lda #nmi4 ldx #144 bne nmis nmi4 pha txa pha tya pha lda $dd0d and #16 bne nmi8 beq nmi7 clrsid ldx #0 txa csid sta 54272,x dex bne csid rts pause2 jsr pause pause ldx #10 pa1 jsr $eeb3 dex bne pa1 rts getsid pha jsr clrsid lda #15 sta 54296 pla sta 54287 lda #8 sta 54289 sty old ldx #0 stx try sty 54290 liessid dec try beq ratte lda 54299 cmp old beq liessid sta puff,x sta old lda #0 sta try inx bne liessid dey sty 54290 txa rts ratte tya rts testad lda 54297 cmp #24 beq tad2 cmp #25 bne tad3 tad2 lda 54298 cmp #45 beq tad3 cmp #46 beq tad3 cmp #47 tad3 rts clrshift lda #136 sta $dd0d sta $dc0d ldy #20 cs1 dey beq cm1 lda #2 sta $dd01 lda #0 sta $dd01 lda $dc0d and #8 beq cs1 cm1 ldy #20 cs2 dey beq cm2 lda #8 sta $dd01 lda #0 sta $dd01 lda $dd0d and #8 beq cs2 cm2 lda #127 sta $dd0d sta $dc0d rts rirq lda $d019 sta $d019 lsr bcs ract jmp $ea31 ract lda $d012 sta chk jmp $ea81 .byte " doc 64 version 2.2" .byte " autor: nikolaus heusler zweng" .byte "auerweg 18 8000 muenchen 71 (c) nh90"